package com.ktmall.mapper;

import com.ktmall.pojo.CartItem;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

public interface CartItemMapper {
    /**
     * 添加购物车
     * @param cartItem 购物车实体
     * @return 返回受影响的行数，行数为1添加成功
     */
    public int insert(CartItem cartItem);

    /**
     * 根据微信用户id和skuId查询购物车详情（用户判断当前用户是否重复购买此商品）
     * 如果重复购买，就对购买数量进行累加
      * @param userId 微信用户id
     * @param skuId 商品sku的id
     */
    public CartItem findByUserIdAndSkuId(@Param("userId") Integer userId, @Param("skuId") Integer skuId);

    /**
     * 根据微信用户id和skuId对重复加入购物车的商品进行购买数量累加
     * @param userId 用户id
     * @param skuId 商品sku的id
     * @param goodsCount 本次加入购物车的购买数量
     */
    public int updateBuyNum(@Param("userId") Integer userId, @Param("skuId") Integer skuId, @Param("goodsCount") Integer goodsCount);

    /**
     * 查询当前登录用户购物车中的商品列表
     * @param userId 当前登录的微信用户id
     */
    public List<CartItem> findByUserId(Integer userId);

    /**
     * 批量删除购物车信息
     * @param ids 购物车id，多个id值是用逗号隔开
     */
    public int batchDel(@Param("ids") Integer[] ids);

    /**
     * 根据购物车id更新购物车中的购物数量
     * @param id 购物车id
     * @param goodsCount 购买数量
     */
    public int update(@Param("id") Integer id, @Param("goodsCount") Integer goodsCount);

    /**
     * 购物车中的单选按钮
     * @param id 购物车id
     * @param selected 单选状态：0表示false未勾选，1表示true已勾选
     */
    public int updateSelected(@Param("id") Integer id, @Param("selected") Integer selected);

    /**
     * 修改当前登录用户的购物车列表选中状态为全选或全不选
     * @param userId 登录用户的id
     * @param allSelected 选中状态：0表示false全不选，1表示true全选
     * @return
     */
    public int updateAllSelected(@Param("userId") Integer userId, @Param("allSelected") Integer allSelected);

    public List<CartItem> findSelectedByUserId(Integer userId);
}
